/*
 * $Id$
 *
 * Copyright (C) Paris8-IUT de Montreuil, 2012-2013
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 */

package fr.paris8.iut.info.iddl;

import fr.paris8.iut.info.iddl.conf.Semantics;
 
import java.net.URI;
import java.util.Map;
import java.util.Hashtable;
import java.util.Properties;
import java.util.Set;
import java.util.Iterator;
import java.util.Vector;
import java.util.ArrayList;
import java.util.List;
import java.util.Enumeration;

import java.io.File;
import java.io.IOException;
 

import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassAxiom;
import org.semanticweb.owlapi.model.OWLLiteral;
import org.semanticweb.owlapi.model.OWLDataProperty;
import org.semanticweb.owlapi.model.OWLDataPropertyExpression;
import org.semanticweb.owlapi.model.OWLDataRange;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.AxiomType;
import org.semanticweb.owlapi.model.OWLOntologyChange;
import org.semanticweb.owlapi.model.OWLNamedIndividual;
import org.semanticweb.owlapi.reasoner.NodeSet;
import org.semanticweb.owlapi.reasoner.Node;
import org.semanticweb.owlapi.util.Version;
import org.semanticweb.owlapi.reasoner.BufferingMode;
import org.semanticweb.owlapi.reasoner.UnsupportedEntailmentTypeException;
import org.semanticweb.owlapi.reasoner.InconsistentOntologyException;
import org.semanticweb.owlapi.reasoner.FreshEntitiesException;
import org.semanticweb.owlapi.reasoner.ReasonerInterruptedException;
import org.semanticweb.owlapi.reasoner.TimeOutException;
import org.semanticweb.owlapi.reasoner.ClassExpressionNotInProfileException;
import org.semanticweb.owlapi.reasoner.AxiomNotInProfileException;

import org.semanticweb.owlapi.reasoner.OWLReasoner;
import org.semanticweb.owlapi.reasoner.OWLReasonerException;

import org.semanticweb.owl.align.Alignment;

public class IDDLReasoner implements OWLReasoner {
    
	//This local reasoner is used for DL semantics and for local reasonings 
	private Semantics sem = Semantics.DL;
	private Vector ontos  = new Vector(0);
	private Vector aligns = new Vector(0);
	
	private Hashtable<URI,URI> distributedOnto = new Hashtable<URI,URI>();
	//private Hashtable<URI,URI> distributedAlign= new Hashtable<URI,URI>();
	
	public LocalReasoner localReasoner   = null;
	
	public IDDLReasonerImpl  globalReasoner = null;

	public static String uriRoot = null;
	
	public IDDLReasonerImpl getIDDLReasoner() {
		   return globalReasoner;
	}
	
	public LocalReasoner getLocalReasoner(){
		   return localReasoner;
	}
	
	public void addOntology(URI onto){
	      ontos.add( onto );
	}
	
	public void addAlignment(URI align){
		  aligns.add( align );
	}

	public void addAlignment(Alignment align){
		   globalReasoner.addAlignment( align );
	}
	
	//for distributed reasoning
	public void addOntology(URI onto, URI service){
		  if(service != null) distributedOnto.put( onto, service );
		  ontos.add( onto );
	}
	
	public IDDLReasoner() {
		localReasoner  = new LocalReasoner();
	    	globalReasoner = new IDDLReasonerImpl( localReasoner );
		try {
			File rootOnto = File.createTempFile( "uriRoot", "" );
			uriRoot =  "file:" + rootOnto.getAbsolutePath() + File.separator;
			System.out.println("uriroot 1="+ uriRoot);
		} catch (IOException ex){ }
	}
	
	public IDDLReasoner(Semantics s) {
		if(s == Semantics.DDL) 
			 sem = Semantics.DDL;
		else if( s == Semantics.IDDL ) 
			 sem = Semantics.IDDL;
		else 
			 sem = Semantics.DL;
		
	    	
		try {
			File rootOnto = File.createTempFile( "uriRoot", "" );
			uriRoot =  "file:" + rootOnto.getAbsolutePath() + File.separator;
			System.out.println("uriroot 2="+ uriRoot);
		} catch (IOException ex){ }
		localReasoner  = new LocalReasoner();
	    	globalReasoner = new IDDLReasonerImpl( localReasoner );
	}
	
	public void setSemantics(Semantics s) {
		 sem = s;
	}
	
	public Semantics getSemantics() {
		 return sem;
	}
	
	public boolean isConsistent() {
		   boolean result = false;
		   try{
		   switch (sem)  {
		   		case DL    : 
		   			  globalReasoner.loadIDDLSystem( aligns );
		   			  result = localReasoner.isConsistent(ontos, globalReasoner.getSystemData().getOWLAlignOnto());
		   			  break;
		   		case IDDL  : 
					  globalReasoner.loadIDDLSystem( aligns );
		   			  result = globalReasoner.isConsistentDistributed();
	   			  	  break;
		   		
		   		default    : 
		   			  result = localReasoner.isConsistent(ontos, aligns);
		   }
                   }catch(Exception e)
                   {}
		   
		   return result;
	}
	
	public boolean isEntailed( OWLAxiom cons ) {
		   boolean result = false;
		   
		   switch ( sem )  {
		   		case DL    : 
		   			  globalReasoner.loadIDDLSystem( aligns );
		   			  result = localReasoner.isEntailed( ontos, globalReasoner.getSystemData().getOWLAlignOnto(), cons);
		   			  break;
		   		//case IDDL  : 
		   		//	  globalReasoner.loadIDDLSystem( alignUris );
		   		//	  result = globalReasoner.isConsistent();
	   			//    break;
		   		//case MIDDL : 
		   		//	  globalReasoner.loadMIDDLSystem( alignUris );
		   		//	  result = globalReasoner.isConsistent();
	   			//  	  break;
		   		default    : 
		   			  result = localReasoner.isConsistent(ontos, aligns);
		   }
		   
		   return result;
	}
	
	public boolean isEntailed( Alignment align ) {
		   boolean result = false;
		   
		   switch ( sem )  {
		   		case DL    : 
		   			  globalReasoner.loadIDDLSystem( aligns );
		   			  
		   			  result = localReasoner.isEntailed( ontos, globalReasoner.getSystemData().getOWLAlignOnto(), globalReasoner.getSystemData().OWLAlign2OWLOnto(align));
		   			  break;
		   		case IDDL  :
		   			  System.out.println(" This function is not implemented yet.");
		   		//	  globalReasoner.loadIDDLSystem( alignUris );
		   		//	  result = globalReasoner.isConsistent();
	   			//    break;
		   		//case MIDDL : 
		   		//	  globalReasoner.loadMIDDLSystem( alignUris );
		   		//	  result = globalReasoner.isConsistent();
	   			//  	  break;
		   		default    : 
		   			  result = localReasoner.isConsistent(ontos, aligns);
		   }
		   
		   return result;
	}

	public boolean isConsistent(OWLOntology arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public void classify() throws OWLReasonerException {
		// TODO Auto-generated method stub
		
	}

	public void clearOntologies() throws OWLReasonerException {
		// TODO Auto-generated method stub
		
	}

	public void dispose() {
		// TODO Auto-generated method stub
		
	}

	public Set<OWLOntology> getLoadedOntologies() {
		// TODO Auto-generated method stub
		return null;
	}

	public boolean isClassified() throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isDefined(OWLClass arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isDefined(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isDefined(OWLDataProperty arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isDefined(OWLIndividual arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isRealised() throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public void loadOntologies(Set<OWLOntology> arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		
	}

	public void realise() throws OWLReasonerException {
		// TODO Auto-generated method stub
		
	}

	public void unloadOntologies(Set<OWLOntology> arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		
	}

	public Set<Set<OWLClass>> getAncestorClasses(OWLClassExpression arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClass>> getDescendantClasses(OWLClassExpression arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

    /* These were added in OWL API 3 */
    public long getTimeOut() {
		// TODO Auto-generated method stub
	return (long)0.;
    }
    public org.semanticweb.owlapi.reasoner.IndividualNodeSetPolicy getIndividualNodeSetPolicy(){
		// TODO Auto-generated method stub
		return null;
    }

    public org.semanticweb.owlapi.reasoner.FreshEntityPolicy getFreshEntityPolicy() {
		// TODO Auto-generated method stub
		return null;
    }

	public org.semanticweb.owlapi.reasoner.Node<OWLClass> getEquivalentClasses(OWLClassExpression arg0) {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLClass> getInconsistentClasses() throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClass>> getSubClasses(OWLClassExpression arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClass>> getSuperClasses(OWLClassExpression arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public boolean isEquivalentClass(OWLClassExpression arg0, OWLClassExpression arg1)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isSubClassOf(OWLClassExpression arg0, OWLClassExpression arg1)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isSatisfiable(OWLClassExpression arg0) {
		// TODO Auto-generated method stub
		return false;
	}

	public Map<OWLDataProperty, Set<OWLLiteral>> getDataPropertyRelationships(
			OWLIndividual arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLIndividual> getIndividuals(OWLClassExpression arg0, boolean arg1)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Map<OWLObjectProperty, Set<OWLIndividual>> getObjectPropertyRelationships(
			OWLIndividual arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLIndividual> getRelatedIndividuals(OWLIndividual arg0,
			OWLObjectPropertyExpression arg1) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLLiteral> getRelatedValues(OWLIndividual arg0,
			OWLDataPropertyExpression arg1) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClass>> getTypes(OWLIndividual arg0, boolean arg1)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public boolean hasDataPropertyRelationship(OWLIndividual arg0,
			OWLDataPropertyExpression arg1, OWLLiteral arg2)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean hasObjectPropertyRelationship(OWLIndividual arg0,
			OWLObjectPropertyExpression arg1, OWLIndividual arg2)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean hasType(OWLIndividual arg0, OWLClassExpression arg1, boolean arg2)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public Set<Set<OWLObjectProperty>> getAncestorProperties(
			OWLObjectProperty arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLDataProperty>> getAncestorProperties(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLObjectProperty>> getDescendantProperties(
			OWLObjectProperty arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLDataProperty>> getDescendantProperties(
			OWLDataProperty arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClassExpression>> getDomains(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLClassExpression>> getDomains(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLObjectProperty> getEquivalentProperties(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLDataProperty> getEquivalentProperties(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLObjectProperty>> getInverseProperties(
			OWLObjectProperty arg0) throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLClassExpression> getRanges(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLDataRange> getRanges(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLObjectProperty>> getSubProperties(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLDataProperty>> getSubProperties(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLObjectProperty>> getSuperProperties(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<Set<OWLDataProperty>> getSuperProperties(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return null;
	}

	public boolean isAntiSymmetric(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isFunctional(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isFunctional(OWLDataProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isInverseFunctional(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isIrreflexive(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isReflexive(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isSymmetric(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isTransitive(OWLObjectProperty arg0)
			throws OWLReasonerException {
		// TODO Auto-generated method stub
		return false;
	}


	 

	public NodeSet<OWLNamedIndividual> getDifferentIndividuals(OWLNamedIndividual ind) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

 	public Node<OWLNamedIndividual> getSameIndividuals(OWLNamedIndividual ind) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}
  	
	public Set<OWLLiteral> getDataPropertyValues(OWLNamedIndividual ind, OWLDataProperty pe) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLNamedIndividual> getObjectPropertyValues(OWLNamedIndividual ind, OWLObjectPropertyExpression pe) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLNamedIndividual> getInstances(OWLClassExpression ce, boolean direct) throws InconsistentOntologyException, ClassExpressionNotInProfileException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public NodeSet<OWLClass> getTypes(OWLNamedIndividual ind, boolean direct) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public NodeSet<OWLClass> getDataPropertyDomains(OWLDataProperty pe, boolean direct) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public NodeSet<OWLDataProperty> getDisjointDataProperties(OWLDataPropertyExpression pe, boolean direct) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public Node<OWLDataProperty> getEquivalentDataProperties(OWLDataProperty pe) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public NodeSet<OWLDataProperty> getSuperDataProperties(OWLDataProperty pe, boolean direct) throws InconsistentOntologyException, FreshEntitiesException, ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;

	}

	public void flush() {
		// TODO Auto-generated method stub
		
	}

	public Node<OWLClass> getBottomClassNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLDataProperty> getBottomDataPropertyNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLObjectProperty> getBottomObjectPropertyNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public BufferingMode getBufferingMode() {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLClass> getDisjointClasses(OWLClassExpression arg0,
			boolean arg1) {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLObjectProperty> getDisjointObjectProperties(
			OWLObjectPropertyExpression arg0, boolean arg1)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLObjectProperty> getEquivalentObjectProperties(
			OWLObjectPropertyExpression arg0)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLObjectProperty> getInverseObjectProperties(
			OWLObjectPropertyExpression arg0)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLClass> getObjectPropertyDomains(
			OWLObjectPropertyExpression arg0, boolean arg1)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLClass> getObjectPropertyRanges(
			OWLObjectPropertyExpression arg0, boolean arg1)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLAxiom> getPendingAxiomAdditions() {
		// TODO Auto-generated method stub
		return null;
	}

	public Set<OWLAxiom> getPendingAxiomRemovals() {
		// TODO Auto-generated method stub
		return null;
	}

	public List<OWLOntologyChange> getPendingChanges() {
		// TODO Auto-generated method stub
		return null;
	}

	public String getReasonerName() {
		// TODO Auto-generated method stub
		return null;
	}

	public Version getReasonerVersion() {
		// TODO Auto-generated method stub
		return null;
	}

	public OWLOntology getRootOntology() {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLClass> getSubClasses(OWLClassExpression arg0, boolean arg1) {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLDataProperty> getSubDataProperties(OWLDataProperty arg0,
			boolean arg1) throws InconsistentOntologyException,
			FreshEntitiesException, ReasonerInterruptedException,
			TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLObjectProperty> getSubObjectProperties(
			OWLObjectPropertyExpression arg0, boolean arg1)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLClass> getSuperClasses(OWLClassExpression arg0,
			boolean arg1) throws InconsistentOntologyException,
			ClassExpressionNotInProfileException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public NodeSet<OWLObjectProperty> getSuperObjectProperties(
			OWLObjectPropertyExpression arg0, boolean arg1)
			throws InconsistentOntologyException, FreshEntitiesException,
			ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLClass> getTopClassNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLDataProperty> getTopDataPropertyNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLObjectProperty> getTopObjectPropertyNode() {
		// TODO Auto-generated method stub
		return null;
	}

	public Node<OWLClass> getUnsatisfiableClasses()
			throws ReasonerInterruptedException, TimeOutException {
		// TODO Auto-generated method stub
		return null;
	}

	public void interrupt() {
		// TODO Auto-generated method stub
		
	}

	public boolean isEntailed(Set<? extends OWLAxiom> arg0)
			throws ReasonerInterruptedException,
			UnsupportedEntailmentTypeException, TimeOutException,
			AxiomNotInProfileException, FreshEntitiesException {
		// TODO Auto-generated method stub
		return false;
	}

	public boolean isEntailmentCheckingSupported(AxiomType<?> arg0) {
		// TODO Auto-generated method stub
		return false;
	}

	public void prepareReasoner() throws ReasonerInterruptedException,
			TimeOutException {
		// TODO Auto-generated method stub
		
	}
}




